package com.domain.controller;

import com.domain.common.Comments;
import com.domain.common.Const;
import com.domain.common.Result;
import com.domain.pojo.Users;
import com.domain.service.BusinessCardService;
import com.domain.utils.NotNullUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

/**
 * 个人名片
 */
@Controller
@RequestMapping("/businesscard")
public class BusinessCardController {

    @Autowired
    private BusinessCardService businessCardService;

    /**
     * 获取个人名片（他人）
     *
     * @param userToken 用户token
     * @param userId    用户id
     * @param chUsersId 被点击用户得id
     * @param request
     * @return
     */
    @RequestMapping(value = "/getUsersCards", method = RequestMethod.POST)
    @ResponseBody
    public Result getUsersCards(String userToken, String userId, String chUsersId, HttpServletRequest request) {
        try {
            Users users = (Users) request.getSession().getAttribute(Const.CURRENT_USER);
            if (!NotNullUtils.isNotNullObject(users) || !users.getSpareOne().equals(userToken)) {
                return Result.publicResult(Comments.NEED_LOGIN, "请登录");
            }
            return businessCardService.getUsersCards(userId, chUsersId);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("系统错误");
        }
    }

    /**
     * 请求加好友 (只有建立讨论组才能加好友)
     *
     * @param userToken 用户token
     * @param userId    用户 id
     * @param friendId  好友id
     * @param groupId   群id
     * @param request
     * @return
     */
    @RequestMapping(value = "/addFriends", method = RequestMethod.POST)
    @ResponseBody
    public Result addFriends(String userToken, String userId, String friendId, String groupId, HttpServletRequest request) {
        try {
            Users users = (Users) request.getSession().getAttribute(Const.CURRENT_USER);
            if (!NotNullUtils.isNotNullObject(users) || !users.getSpareOne().equals(userToken)) {
                return Result.publicResult(Comments.NEED_LOGIN, "请登录");
            }
            return businessCardService.addFriends(userId, friendId, groupId);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("系统错误");
        }
    }

    /**
     * 发消息
     *
     * @param userToken 用户token
     * @param userId    发送者id
     * @param ope       0：点对点个人消息，1：群消息（高级群），其他返回414
     * @param to        ope==0是表示accid即用户id，ope==1表示tid即群id
     * @param type      0 表示文本消息,
     *                  1 表示图片，
     *                  2 表示语音，
     *                  3 表示视频，
     *                  4 表示地理位置信息，
     *                  6 表示文件，
     *                  100 自定义消息类型（特别注意，对于未对接易盾反垃圾功能的应用，该类型的消息不会提交反垃圾系统检测）
     * @param body      发送得内容最大长度5000字符，为一个JSON串
     * @param request
     * @return
     */
    @RequestMapping(value = "/senMessage", method = RequestMethod.POST)
    @ResponseBody
    public Result senMessage(String userToken, String userId, String ope, String to, String type, String body, HttpServletRequest request) {
        try {
            Users users = (Users) request.getSession().getAttribute(Const.CURRENT_USER);
            if (!NotNullUtils.isNotNullObject(users) || !users.getSpareOne().equals(userToken)) {
                return Result.publicResult(Comments.NEED_LOGIN, "请登录");
            }
            return businessCardService.sendMessage(userId, ope, to, type, body);
        } catch (Exception e) {
            e.printStackTrace();
            return Result.fail("系统错误");
        }
    }


}